
本篇介紹 ES2020 (ES11) 提供的 Nullish Coalescing Operator ( ?? 運算子)。
|| 運算子如果某個值為 null 或 undefined 時,會希望為它設定一個預設值,常見的作法是使用 || 運算子 (邏輯 OR 運算子)。例如:
let user = {
name: 'Titan',
age: null,
description: '',
isVerify: false,
loginCount: 0
};
console.log(user.age || 18);
// 18
console.log(user.undefinedValue || 'default');
// default
若是某些值剛好是 falsy 值,這可能會不符合你的預期,因為那些 falsy 對你來說是需要的值,但 || 運算子會因 falsy 值而使用預設值:
let user = {
name: 'Titan',
age: null,
description: '',
isVerify: false,
loginCount: 0
};
console.log(user.description || 'Hello World');
// "Hello World"
console.log(user.isVerify || true);
// true
console.log(user.loginCount || 666);
// 666
如果你只想讓 null 或 undefined 的值設定預設值,那 || 運算子不太適用!
這就是本篇介紹的 Nullish Coalescing Operator ( ?? 運算子) 派上用場的時刻!
?? 運算子你可以把 ?? 運算子想成是高配版的 || (我知道這樣講不準確 XD),?? 運匴子只能將 null 或 undefined 的值設定預設值。
用前面的例子來舉例:
let user = {
name: 'Titan',
age: null,
description: '',
isVerify: false,
loginCount: 0
};
console.log(user.age ?? 18);
// 18
console.log(user.undefinedValue ?? 'default');
// default
console.log(user.description ?? 'Hello World');
// ""
console.log(user.isVerify ?? true);
// false
console.log(user.loginCount ?? 666);
// 0